#ifndef __UEQ_EQ_H_INCLUDED__
#define __UEQ_EQ_H_INCLUDED__

#include "ueq_fifo.h"

typedef enum UeqEventValuesEnum
{
    UEQ_EVENT_TEST0 = 0,
    UEQ_EVENT_TEST1,
    UEQ_EVENT_TEST2,
    UEQ_EVENT_TEST3,
    UEQ_EVENT_TEST4,
    UEQ_EVENT_TEST5,
    UEQ_EVENT_TEST6,
    UEQ_EVENT_TEST7,
    UEQ_EVENT_TEST8,
    UEQ_EVENT_TEST9,
    UEQ_NUM_EVENTS,
    UEQ_EVENT_NULL = 0xFF
} UeqEventValues;

typedef struct UeqEventQueueStruct
{
    UeqFifo   cb;
    /* holds the information if a given type of event is
       present in the queue */
    UINT32              event_counts[UEQ_NUM_EVENTS];
} UeqEventQueue;

void ueq_event_queue_init(UeqEventQueue *, BYTE *, INT32);
void ueq_event_queue_reset(UeqEventQueue *);
BOOL ueq_event_queue_is_full(UeqEventQueue *);
BOOL ueq_event_queue_is_empty(UeqEventQueue *);
BOOL ueq_event_queue_contains(UeqEventQueue *, UeqEvent);
void ueq_event_queue_push_back(UeqEventQueue *, UeqEvent);
UeqEvent ueq_event_queue_pop_front(UeqEventQueue *);

#endif /* __UEQ_EQ_H_INCLUDED__ */
